class IncidenteMailer < ActionMailer::Base
  add_template_helper(UtilHelper)
  add_template_helper(ApplicationHelper)
  #en caso de no tener destinararios envia el mail a "no-responder@botica.com.py"
  #informando del error en el asunto
  def creation_notification(incidente, emails={:parametro=>"",:direcciones=>[]})
    emails= get_emails(emails,incidente)
    recipients  emails
    from        "no-responder@botica.com.py"
    subject     "Bitacorh: Nuevo incidente creado #{'(ERROR: NO ENVIADO: Direccion(es) de email invalidas)' if emails==['no-responder@botica.com.py']}"
    sent_on     Time.now
    body        :incidente => incidente,:url => "http://192.168.201.101/bitacorh"#{APP_CONFIG[:site_url]}"
    content_type "text/html"
  end
  #obtiene el conjunto de direcciones de email, este puede estar formado por las
  #direcciones de los usuarios que posean el perfil que determina el parametro,
  #o las direcciones pasadas en la clave direcciones, o ambos.
  #En caso que no se encuentre ningun mail, cevolvera la direccion email "no-responder@botica.com.py"
  def get_emails(emails,incidente)
    return ['informatica@botica.com.py'] if RAILS_ENV.include?'development'
    area_id=incidente.funcionario.cargo.area_id
    cargo_ids=Cargo.find(:all,:select=>'id',:conditions=>{:area_id=>area_id,:recibe_mails_hechos=>true}).map(&:id)
    mails1=Usuario.activos.find(:all,:select=>'email',:conditions=>{:cargo_id=>cargo_ids}).map(&:email)
    mails2=case true
    when (!emails[:parametro].blank? and !emails[:direcciones].blank?)
      Parametro.destinatarios(emails[:parametro]).concat(emails[:direcciones]).uniq
    when !emails[:parametro].blank?
      Parametro.destinatarios(emails[:parametro])
    when !emails[:direcciones].blank?
      emails[:direcciones].uniq 
    else
      ["no-responder@botica.com.py"]
    end
    mails1.concat(mails2).uniq
  end
end